diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index bd13833..f7f813f 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -36,8 +36,12 @@
 	 *
 	 * Sets the $config data from the primary config.php file as a class variable
 	 *
-	 * @access	public
-	 */
+     * @access   public
+     * @param   string    the config file name
+     * @param   boolean  if configuration values should be loaded into their own section
+     * @param   boolean  true if errors should just return false, false if an error message should be displayed
+     * @return  boolean  if the file was successfully loaded or not
+     */
 	function CI_Config()
 	{
 		$this->config =& _get_config();
@@ -55,7 +59,7 @@
 	 * @param	string	the config file name
 	 * @return	boolean	if the file was loaded correctly
 	 */	
-	function load($file = '')
+	function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
 	{
 		$file = ($file == '') ? 'config' : str_replace(EXT, '', $file);
 	
@@ -63,15 +67,42 @@
 		{                
 			return TRUE;
 		}
+
+		if ( ! file_exists(APPPATH.'config/'.$file.EXT))
+		{
+			if ($fail_gracefully === TRUE)
+			{
+				return FALSE;
+			}
+			show_error('The configuration file '.$file.EXT.' does not exist.');
+		}
 	
 		include_once(APPPATH.'config/'.$file.EXT);
 
 		if ( ! isset($config) OR ! is_array($config))
 		{
+			if ($fail_gracefully === TRUE)
+			{
+				return FALSE;
+			}		
 			show_error('Your '.$file.EXT.' file does not appear to contain a valid configuration array.');
 		}
 		
-		$this->config = array_merge($this->config, $config);
+		if ($use_sections === TRUE)
+		{
+			if (isset($this->config[$file]))
+			{
+				$this->config[$file] = array_merge($this->config[$file], $config);
+			}
+			else
+			{
+				$this->config[$file] = $config;
+			}
+		}
+		else
+		{
+			$this->config = array_merge($this->config, $config);
+		}
 
 		$this->is_loaded[] = $file;
 		unset($config);
@@ -86,6 +117,48 @@
 	/**
 	 * Fetch a config file item
 	 *
+	 *
+	 * @access	public
+	 * @param	string	the config item name
+	 * @param	string	the index name
+	 * @param	bool
+	 * @return	string
+	 */		
+	function item($item, $index = '')
+	{			
+		if ($index == '')
+		{	
+			if ( ! isset($this->config[$item])) 
+			{
+				return FALSE;
+			}
+		
+			$pref = $this->config[$item];
+		}
+		else
+		{
+			if ( ! isset($this->config[$index])) 
+			{
+				return FALSE;
+			}
+		
+			if ( ! isset($this->config[$index][$item]))
+			{
+				return FALSE;
+			}
+		
+			$pref = $this->config[$index][$item];
+		}
+
+        return $pref;
+	}
+  	// END item()
+  	
+  	// --------------------------------------------------------------------
+
+	/**
+	 * Fetch a config file item - adds slash after item
+	 *
 	 * The second parameter allows a slash to be added to the end of
 	 * the item, in the case of a path.
 	 *
@@ -94,7 +167,7 @@
 	 * @param	bool
 	 * @return	string
 	 */		
-	function item($item, $slash = FALSE)
+	function slash_item($item)
 	{
 		if ( ! isset($this->config[$item])) 
 		{
@@ -103,20 +176,20 @@
 		
 		$pref = $this->config[$item];
 		
-		if ($pref == '')
-		{
-			return $pref;
+		if ($pref != '')
+		{			
+			if (ereg("/$", $pref) === FALSE)
+			{
+				$pref .= '/';
+			}
 		}
-			
-        if ($slash !== FALSE AND ereg("/$", $pref) === FALSE)
-        {
-			$pref .= '/';
-        }
         
         return $pref;
 	}
   	// END item()
   	
+  	
+  	
 	// --------------------------------------------------------------------
 
 	/**
